package top.healthylife.gateway.platform.zd.api.utils;

import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModel;
import lombok.extern.slf4j.Slf4j;
import top.healthylife.basics.utils.utils.RedisUtil;
import top.healthylife.gateway.core.util.SystemConfigUtils;
import top.healthylife.gateway.dto.request.req.ApiReqDto;
import top.healthylife.gateway.platform.zd.api.config.SystemConfig;

import java.util.Map;

/**
 * @author : GaoZeXi
 * @date 2022/1/11 14:42
 */

@ApiModel("ZdHttpUtil")
@Slf4j
public class ZdHttpUtil extends UserLoginUtil {
    /**
     * 一、登记系统升级后公网测试环境地址如下：
     * 页面应用测试地址：https://www.zhongdengwang.org.cn （页面应用，带有测试系统字样）
     * 登记接口测试地址：https://ws.zhongdengwang.org.cn/mfrs_ws_test/services/
     * 查询接口测试地址：https://wsquery.zhongdengwang.org.cn/mfrsq_ws_test/services/
     * 修改测试机hosts文件如下：（页面应用，带有测试系统字样 <-此处划重点，别访问错了）
     * 111.30.77.185     www.zhongdengwang.org.cn
     * 111.30.77.184     ws.zhongdengwang.org.cn
     * 111.30.77.181     wsquery.zhongdengwang.org.cn
     */
    static final String URI = "https://wsquery.zhongdengwang.org.cn/mfrsq_ws_test/services/";
    //static final String PRO_HOST = "https://wsquery.zhongdengwang.org.cn/";


    public static <T> T httpRequest(ApiReqDto apiReqDto, String serviceName, Class<T> clazz) {
        //1.获取账号信息
        SystemConfig systemConfig = systemConfigInfo();
        byte[] token = systemConfig.getToken();
        log.info("请求参数为:{}", JSONObject.toJSONString(apiReqDto));
        log.info("账号信息为:{}", JSONObject.toJSONString(systemConfig));
        Map<String, Object> businessMap = BeanUtil.beanToMap(apiReqDto);
        Map<String, Object> accountMap = BeanUtil.beanToMap(systemConfig);
        ////移除授权码
        //accountMap.remove("webAuthorizeChannelCode");
        //businessMap.putAll(accountMap);
        //String params = handleParam(businessMap);
        //try {
        //    String finalQuestAddress =  ;
        //    log.info("最终请求地址:{}", finalQuestAddress);
        //    RecordRequestInfo.recordRequest(finalQuestAddress, null, null, "get");
        //    String body = HttpUtil.createGet(finalQuestAddress).execute().body();
        //    //将三方元数据存储到线程变量
        //    SystemThreadLocal.set(ORIGIN_DATA, body);
        //    JSONObject jsonObject = JSONObject.parseObject(body);
        //    String code = jsonObject.getString("code");
        //    if (SUCCESS.equals(code)) {
        //        JSONObject data = jsonObject.getJSONObject(DATA);
        //        return data.toJavaObject(clazz);
        //    } else {
        //        if (responseCode.containsKey(code)) {
        //            throw new BusinessException(responseCode.get(code));
        //        }
        //        throw new BusinessException("未知响应码:{}", code);
        //    }
        //} catch (Exception e) {
        //    throw new BusinessException("微风企接口数据响应异常,异常信息:{}", e.getMessage());
        //}
        return null;
    }


    /**
     * 访问日志输出和配置获取
     *
     * @return 账号信息
     */
    public static SystemConfig systemConfigInfo() {
        //可直接通过工具类获取这个对象
        SystemConfig systemConfig = (SystemConfig) SystemConfigUtils.get();
        if (isLogin()) {
            systemConfig.setToken(RedisUtil.get(TOKEN));
        }
        log.info("当前登录账号:{}", JSONObject.toJSONString(systemConfig));
        return systemConfig;
    }
}
